草庐IT

C++ ifstream 未声明的标识符

全部标签

c# - 为什么 GetProperties 两次列出 protected 属性(在通用基类中声明)?

当我声明以下简单类时:classClass1{protectedvirtualTProp1{get;set;}protectedvirtualstringProp2{get;set;}}classClass2:Class1{protectedoverridestringProp1{get;set;}protectedoverridestringProp2{get;set;}}现在我使用反射来获取Class2的属性,如下所示:varhProperties=typeof(Class2).GetProperties(BindingFlags.NonPublic|BindingFlags.In

c# - 在 for 循环内声明的变量会影响循环的性能吗?

我做了功课,发现反复保证无论在for循环内部还是外部声明变量都不会影响性能,而且它实际上编译为完全相同的MSIL。但我一直在摆弄它,发现在循环内移动变量声明确实会带来相当大且一致的性能提升。我编写了一个小型控制台测试类来测量这种效果。我初始化了一个静态double[]数组items,并且两个方法对其执行循环操作,将结果写入静态double[]数组缓冲区。最初,我的方法是那些我注意到差异的方法,即复数的大小计算。对长度为1000000的items数组运行100次,对于变量(6个double变量)在循环内的那个,我的运行时间始终较低:例如,32,83±0,64msv43,24±0,45ms

c# - 如果声明是接口(interface),编译器无法识别泛型中的属性

查看以下演示我的VisualStudio2017编译器问题的内容publicinterfaceIFoo{stringKey{get;set;}}publicclassFoo:IFoo{publicstringKey{get;set;}}classProgram{staticvoidMain(string[]args){PrintFoo(newFoo(){Key="HelloWorld"});Console.ReadLine();}privatestaticvoidPrintFoo(Tfoo)whereT:IFoo{//setbreakpointhereandtrytolookatfoo

c# - 简单数据 ORM。无法绑定(bind)多部分标识符

我正在使用Simple.DataORM。我正在尝试从两个连接表进行查询。此查询工作正常:dynamicalias;varcandidatesRec=db.dbo.Candidates.FindAll(db.dbo.Candidates.CommonOfferId==commonOfferId&&db.dbo.CandidateProfiles.CandidateId==null).LeftJoin(db.dbo.CandidateProfiles,outalias).On(db.dbo.Candidates.Id==alias.CandidateId).Select(db.dbo.Ca

C# - 在声明中设置初始值的缺点

这样的类(class)有什么缺点吗:classExample1{protectedstringUserId=(string)Session["user"];}//versusclassExample2{protectedstringUserId;publicExample2(){UserId=(string)Session["user"];}}如果我一直想设置这个值,Example1有什么缺点吗?更新:Session["user"]在Global.asaxSession_Start中设置。所以如果这失败了。无论如何都不应该起作用。 最佳答案

c# - 具有 System.Security.Claims 的 .NET Framework 中的复杂声明值

我正在开发一个使用Asp.Net5MVC、Owin和Oauth2不记名token作为身份验证类型的网络应用。在thisguide添加自定义复杂声明Json并成功序列化到Microsoft.IdentityModel.Claims.ClaimsIdentity实例之后,我尝试使用System.Security.Claims命名空间上的ClaimsIdentity复制相同的示例。不幸的是,似乎在complexClaim实例中添加了一个ClaimsIdentity,派生类的类型信息丢失了,声明存储为一个System.Security.Claims.Claim。varcomplexClaim=

C#:声明函数永远不会返回 null?

背景:有一个开发者原则“如果请求的项不存在,我的函数应该返回null还是抛出异常?”我不想在这里讨论。我决定为所有必须返回值的情况抛出异常,并且只有在(编程或逻辑上)无效请求的情况下,该值才会不存在。最后是我的问题:我可以标记一个函数,以便编译器知道它永远不会返回null并警告任何检查返回值是否为null的人吗? 最佳答案 您可以使用CodeContracts执行此操作.示例:publicStringMethod1(){Contract.Ensures(Contract.Result()!=null);//Todo}

c# - 在 C# 中使用 var 和 default 进行声明

最近我看到有人大量使用var和default关键字来声明变量(以及每个声明),像这样:varemployee=default(Employee);//EmployeeisaclassvarerrorInfo=default(ErrorInfo);//ErrorInfoisstruct;Blankisdefaultvaluevarsalary=default(Double);varisManager=default(Boolean?);而不是使用:Employeeemployee=null;//EmployeeisaclassErrorInfoerrorInfo=Blank;//Erro

c# - 为什么可以只使用别名来声明枚举而不是 .NET 类型?

这很完美..publicenumNodeType:byte{Search,Analysis,Output,Input,Audio,Movement}这会返回编译器错误...publicenumNodeType:Byte{Search,Analysis,Output,Input,Audio,Movement}使用反射时也会发生同样的情况...那么,有人知道为什么enum-base只是一个整型吗? 最佳答案 可能它只是一个不完整的编译器实现(虽然有记录)。从技术上讲,这也应该有效,但事实并非如此。usingx=System.Byte;p

c# - 这两个数组声明有什么区别?

这两个声明似乎是一样的:int[]array1={11,22,33};和int[]array2=newint[]{11,22,33};但是第二个示例中newint[]这部分需要什么?有区别吗? 最佳答案 在这种情况下没有区别-但第一种语法仅在声明变量时可用。来自C#4规范第12.6节:Arrayinitializersmaybespecifiedinfielddeclarations,localvariabledeclarations,andarraycreationexpressions.(“数组初始值设定项”是大括号中的位-数组